
const path = require('path')
/*
优先：原本一个文件需要在loader全部走一遍匹配，增加oneOf后只会匹配一个匹配到了就不会继续往下执行
缺点：不能处理同一类型文件，例如loader中有eslint和babel同时存在时    js文件先执行 eslint 再执行 babel 或设置enforce: 'pre',//优先执行
*/
// 复用loader
const commonCssLoader = [
    'style-loader',
    'css-loader',
];
module.exports = {
    entry: './index.js',
    output: {
        filename: 'js/index.js',
        path: path.resolve(__dirname, 'dist')
    },
    module: {
        rules: [
            // {
            //     //语法检测
            //     test: /\.js$/i,
            //     loader: 'eslint-loader',
            //     exclude: /node_modules/,
            //     enforce: 'pre',//优先执行
            //     options: {
            //         fix: true//自动修改eslint错误
            //     }
            // },
            {
                oneOf: [//每个loader只会匹配一个
                    {
                        test: /\.less$/,
                        use: [...commonCssLoader]
                    },
                    {
                        test: /\.scss$/,
                        use: [...commonCssLoader]
                      },
                    {
                        // //处理js版本转义
                        // test: /\.js$/i,
                        // loader: 'babel-loader',
                        // exclude: /node_modules/,
                        // options: {
                        //     presets: [
                        //         [
                        //             '@babel/preset-env',
                        //             {
                        //                 useBuiltIns: 'usage',//按需加载
                        //                 corejs: {
                        //                     //core-js的版本
                        //                     version: 3
                        //                 },
                        //                 //需要兼容的浏览器
                        //                 targets: {
                        //                     chrome: '60',
                        //                     firefox: '60',
                        //                     ie: '9',
                        //                     safari: '10',
                        //                     edge: '17'
                        //                 }
                        //             }
                        //         ]
                        //     ]
                        // }
                    },
                ]
            }
        ]
    },
    plugins: [
    ],
    mode: 'production'
}